GPS based tracking system

ABSTRACT

A system uses GPS receivers and other sensors to acquire data about one or more objects at an event. The data acquired by the GPS receivers and the sensors is used to determine various statistics about the objects and/or enhance a video presentation of the objects. In one embodiment, the acquired data is used to determine three dimensional positions of the objects, determine the positions of images of the objects in a video and enhance the video accordingly. One exemplar use of the present invention is with a system for tracking automobiles at a race. The system determines statistics about the automobiles and enhances a video presentation of the race.

[0001] This application claims the benefit of U.S. ProvisionalApplication No. 60/213,684, “Locating an Object Using GPS WithAdditional Data,” filed on Jun. 23, 2000; U.S. provisional applicationNo. 60/233,360, “System for Tracking Automobiles,” filed on Sep. 18,2000; and U.S. provisional application No. 60/295,310, “Track ModelConstraint Enhancement For GPS Receiver,” filed on Jun. 1, 2001; allthree applications are incorporated herein by reference.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention is directed to a system that uses GPSreceivers and other sensors to acquire various information about one ormore objects at an event.

[0004] 2. Description of the Related Art

[0005] The television presentation of sporting events needs to beimproved. Because of the size and speed of some objects and the distanceof the television camera from the objects of interest, some objects at asporting event are hard to see on a television screen. To compensate forobjects that are hard to see on television, broadcasters will use zoomlenses. However, the limited field of view of a zoomed camera preventsthe object from being viewed in relation to the playing field andprevents the viewer from seeing other objects that are part of thesporting event. Additionally, even with zoom lenses some objects and/orfeatures remain difficult to see on television.

[0006] In auto racing, for example, it is difficult for a televisionviewer to identify the cars, determine how many laps a particular carhas driven, the order of the cars (e.g. first place, second place, thirdplace, etc.) and the instantaneous velocity of a car. Additionally,because the track is so large a camera can only capture images from partof the track and viewers may miss action in other parts of the track.Other sporting events and non-sporting events also present similarchallenges.

[0007] Furthermore, broadcasters may be able to sustain greater viewerinterest by presenting the viewers with additional desired informationabout the event and provide for the use of that information in anexciting way.

[0008] Thus, there is a need for enhancing the television presentationof objects at sporting events.

SUMMARY OF THE INVENTION

[0009] The present invention, roughly described, pertains to a systemthat uses GPS receivers and other sensors to acquire data about one ormore objects at an event. The data acquired by the GPS receivers and thesensors is used to determine various statistics about the objects and/orenhance a video presentation of the objects. In one embodiment, theacquired data is used to determine a three dimensional position of anobject, determine the position of an image of the object in a video andenhance the video accordingly.

[0010] One use of the present invention is with a system for trackingautomobiles at a race. The system determines statistics about theautomobiles and enhances a video presentation of the race. In variousembodiments, the system may include RPM sensors, brake position sensors,throttle position sensors, fuel level sensors, temperature sensors,transmission position sensors, cameras, etc. In addition to anautomobile race, the present invention can be used in other environmentssuch as with other sporting events and non-sporting events.

[0011] In any system that uses sensors, the reliability of the sensorscan be a concern. In one embodiment of the present invention, one subsetof one or more sensors can be used to determine data normally acquiredby a second subset of one or more sensors if the second subset of one ormore sensors are not providing valid data.

[0012] Another embodiment of the present invention synchronizes dataamong different sensors.

[0013] In one implementation of the present invention, moving objectsare highlighted in a video by a highlight that changes orientationaccording to the attitude of the object being highlighted. A furtherenhancement includes providing data about the object being highlightedand visually connecting that data to the highlight or the image of theobject.

[0014] Various embodiment of the present invention provide differenttypes of data to the viewer or user. For example, in the automobile raceembodiment, a user can be provided with information about a car'sposition in the race (e.g. first place, second place, etc), time behindthe leader, lap number, lap fraction, instantaneous velocity, RPM,throttle position, brake position, drafting effect, transmission gearengaged, fuel level, a prediction of when the car's fuel will bedepleted, when the car has crossed certain locations on the track, whenan accident is occurring and a car's position with respect to other carswhich may have already raced.

[0015] The present invention can be accomplished using hardware,software, or a combination of both hardware and software. The softwareused for the present invention is stored on one or more processorreadable storage media including hard disk drives, CD-ROMs, DVDs,optical disks, floppy disks, tape drives, flash memory, RAM, ROM orother suitable storage devices. In alternative embodiments, some or allof the software can be replaced by dedicated hardware including customintegrated circuits, gate arrays, FPGAs, PLDs, and special purposecomputers. In one implementation, the present invention is performed bya combination of software, computers (one or more processors, one ormore storage devices, I/O, etc), sensors and communication equipment.

[0016] These and other objects and advantages of the present inventionwill appear more clearly from the following description in which thepreferred embodiment of the invention has been set forth in conjunctionwith the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

[0017]FIG. 1 is a block diagram of one embodiment of a tracking system.

[0018]FIG. 2 is a block diagram of one embodiment of a DAPS unit.

[0019]FIG. 3 is a flow chart describing the process of acquiring data ona DAPS unit.

[0020]FIG. 4 is a flow chart describing a communication process for aDAPS unit.

[0021]FIG. 5 is a flow chart describing a process for creating a trackmodel.

[0022]FIG. 6 is a block diagram of a GPS receiver.

[0023]FIG. 7 is a flow chart describing a process performed by the GPSreceiver.

[0024]FIG. 8 is a flow chart describing a process for identifying anappropriate triangle from the track model.

[0025]FIG. 9 is a block diagram of a base station.

[0026]FIG. 10 is a flow chart describing the operation of the basestation.

[0027]FIG. 11 is a block diagram of the components at a camera location.

[0028]FIG. 12 is a block diagram of the remote camera sensorelectronics.

[0029]FIG. 13 is a block diagram of the components at the productioncenter.

[0030]FIG. 14 is a flow chart describing the process of synchronizingGPS time and video time.

[0031]FIG. 15 is a flow chart describing the operation of the productioncenter.

[0032]FIG. 16 is a block diagram of the components for providingphysical loop data.

[0033]FIG. 17 is a flow chart describing the method of receiving andprocessing data.

[0034]FIG. 18 is a flow chart describing the method of processing data.

[0035]FIG. 19 is a flow chart describing the process of determining alap number and lap fraction.

[0036]FIG. 20 depicts a portion of a race track, divided into sections.

[0037]FIG. 21 is a flow chart describing the process for determining thetime behind the leader.

[0038]FIG. 22 is a flow chart describing the process for implementingvirtual loops.

[0039]FIG. 23 is a flow chart describing the process for predicting whena car will run out of fuel.

[0040]FIG. 24 is a flow chart describing the process of enhancing video.

[0041]FIG. 25 is a flow chart describing the process of creating ahighlight with an orientation determined based on the attitude of thecar (or other object).

[0042]FIG. 26 is a flow chart describing the process of usingpre-rendered images to display a phantom object.

[0043]FIG. 27 is a block diagram of the components of an alternativeembodiment camera location which implements a crash camera.

[0044]FIG. 28 is a flow chart describing the operation of a crashcamera.

DETAILED DESCRIPTION

[0045] The present invention pertains to a system that acquires and usesdata about one or more objects. For purposes of example and illustrationonly, the following discussion describes a system used in conjunctionwith an automobile race. However, the present invention can be used withobjects other than cars and can be used in conjunction with events otherthan auto race events.

[0046]FIG. 1 is a block diagram of one embodiment of the presentinvention. FIG. 1 shows Data Acquisition and Positioning System (DAPS)12 with GPS antenna 14 and 900 MHz antenna 16. DAPS 12 is mounted to theobject being tracked. In the embodiment pertaining to an automobilerace, there will be a DAPS unit 12 mounted to each car being tracked.Thus, although FIG. 1 shows only one DAPS 12, the present inventioncontemplates using one or more DAPS 12 units. DAPS unit 12 includes aGPS receiver connected to GPS antenna 14. GPS antenna 14 is used toreceive signals from one or more GPS satellites. 900 MHz antenna 16 isused to communicate with various base units (e.g. 22, 24, 26 and 28). Inone embodiment, the system includes four base stations 22, 24, 26, 28.Base station 22 includes 900 MHz antenna 34, base station 24 includes900 MHz antenna 36, base station 26 includes 900 MHz antenna 38 and basestation 28 includes 900 MHz antenna 40. In one embodiment, there can bemore than four base stations or less than four base stations. It iscontemplated that base stations will be located at different parts ofthe racetrack (or other event). The base stations transmit data to andreceive data from each of the DAPS units via the 900 MHz antennas.

[0047] Data from each of the base stations is communicated to productioncenter 50 using DSL modems. FIG. 1 also shows camera locations 52 and54. In various embodiments, there can be one camera location, two cameralocations or more than two camera locations. Each camera locationincludes one or more cameras and electronics for instrumenting thosecameras. Each of the camera locations is in communication withproduction center 50. In one embodiment, the system of FIG. 1 is used totrack a three dimensional location of each of the cars during anautomobile race, in real time. The system also tracks the movement ofeach of the cameras used to broadcast the race. Based on the informationabout the attitude of the cameras and the three dimensional locations ofthe cars, the system can highlight a live video of the race to produce anumber of effects desired by the production team.

[0048] Base station 22 includes GPS reference station 20 with GPSantenna 32. This reference station is surveyed with accuracy todetermine its location. Reference station 20 receives GPS informationfrom GPS satellites and determines differential GPS error correctioninformation. This error correction information is communicated from theGPS reference station (via base station 22) to production center 50 foreventual retransmission to each of the base stations. The base stationwill send the information to each of the DAPS units. In anotherembodiment, the system of FIG. 1 can use pseudolites to provideadditional data to the GPS receivers in the DAPS units.

[0049]FIG. 2 is a block diagram of DAPS unit 12. FIG. 2 shows wirelessmodem 60, CPU 62, GPS receiver 64, analog sensors 66, and digitalsensors 68. In one embodiment, modem 60 is a Utilicom 2020 radio modem,CPU 62 is a 486 processor, and GPS receiver 64 is a NovAtel OEM4 GPSreceiver. DAPS unit 12 also includes a number of sensors for sensingdata about the automobile. For example, the system could include a brakesensor for determining the position of the brake pedal, an RPM sensorfor determining the instantaneous RPM, throttle sensor for determiningthe position of the throttle, gear sensors for determining the positionof the transmission, temperature sensors, sensors for determininginformation about the driver, etc. Some of these sensors are digitalsensors 68 and some of these sensors are analog sensors 66. Theremaining components of DAPS 12 are interface electronics. Some of theinterface electronics are contained on a FPGA, as noted by dashed line70.

[0050] Serial to parallel module 74 converts serial data from modem 60to an 8-bit parallel stream. The modem does not have a byte sync signal,so it receives a signal from frame sync detector 76 once a frame sync isdetected. Once the frame sync signal has been detected, the serial toparallel module 74 will clock a byte out once every 8 bits have beenreceived. Frame sync detector 76 samples a synchronous serial datastream looking for a particular pattern of bits. Once the frame sync hasbeen detected, it signals the condition to the serial to parallelmodule.

[0051] All data messages are sent with a packet header. The packetheader contains the length of the packet, a time slot number, and a CRC.Packet header detector 78 reads the data stream from the serial toparallel module 74 looking for a packet header with a valid CRC. Once avalid packet header is detected, it clocks the header and the remainderof the packet into Rx FIFO 82. Data will be clocked into the Rx FIFOuntil the modem DCD line becomes inactive. Packet header detector 78contains a programmable address mask. This mask is used to filter outpackets not addressed to the system. If the packet header is receivedwith bit 7 of the control character set, the condition slot number isindicated to the master clock 80. Master clock time is synchronized by apacket header where bit 7 of the control character is set. Once thissignal is received, the time slot clock counters reset to the time slotindicated in the control character. The counters are adjusted to accountfor the length of the packet header so the counter is aligned with thestart of the next packet. Master clock 80 generates a time slot counter.The time slot counter is used by Tx control 86 to determine when to senddata to the transmitter. Rx FIFO 82 is used to buffer a receive datapacket. The FIFO will indicate to the CPU via an interrupt when acomplete data packet is loaded into the FIFO.

[0052] Parallel to serial module 84 translates parallel data from the TxFIFO 86 to a serial stream. The serial data is clocked out by a clockprovided by modem 60. Tx control 86 controls when a packet is sent tomodem 60. It contains four time slot registers. The first time slotregister is loaded from the default time slot dipswitch. The remainingtime slot registers as well as a default time clock register may be setby CPU 62. When master clock 80 sends a time slot signal which matchesone of the time slot registers, an interrupt signal is sent to the CPUinterface and sets RTS active. The CPU starts to load the Tx FIFO 88with data. The modem will turn on and set the CTS line active afterapproximately 2.8 ms. Once the RTS line is active, the Tx control modulewill enable parallel to serial module 84. Tx FIFO 88 will send a signalwhen it is empty. Once this condition is detected, the Tx control modulewill set the RTS line inactive, thus completing the packet. The Tx FIFOmodule buffers data sent from the CPU interface. It will normally holdone complete packet including the packet header, data payload andtrailer CRC.

[0053] Communication to and from CPU 62 is via CPU interface 72. In oneembodiment, CPU interface 72 is in communication with Rx FIFO 82, Txcontrol 86, Tx FIFO 88, frequency translator control 96, digital I/O 94,ADC 92, UART 90, default address dip switch 102 and EEPROM 104. In oneembodiment, EEPROM 104 stores code for programming CPU 62. In anotherembodiment, the code for programming CPU 62 is stored in a flash memory.

[0054] UART 90 is used to communicate to GPS receiver 64. An 8-channel10-bit or greater ADC is used to sample various sensors on the system.All 8 channels can be sampled at 10 Hz per channel. This module may bepart of the interface board or may be supplied by the CPU module. Allanalog lines should be protected against high voltage transients. Theanalog input interface may support rheostat sensors. Sixteen generalpurpose digital I/O signals (see digital I/O module 94) can be availablefor digital sensor 68. Frequency translator control 96 is a digitaloutput register. In one embodiment, frequency translator 98 is used toshift the frequency of the modem. In another embodiment, frequencytranslator 98 is not used.

[0055] Batteries are used to power the system (see power supply andcontrol 100). Two modes are supported, standby and operate. In thestandby mode, only the CPU is powered. In operate mode, all modules arepowered. The CPU is able to switch the modes.

[0056]FIG. 3 is a flowchart describing the collection of data in DAPSunit 12. In step 130, GPS data is received by CPU 62 from GPS receiver64. In one embodiment, GPS data is received five times per second. Instep 132, sensor data is acquired using analog sensors 66 and digitalsensors 68. In step 134, GPS data and sensor data are stored in Tx FIFO88. The process of FIG. 3 is continuously performed during normaloperation of DAPS 12.

[0057]FIG. 4 is a flowchart describing communication to and from DAPS12. To facilitate communication between the many DAPS units and the basestations, time is divided into a repeating set of time slots. Each modemis assigned a time slot during which it may transmit. As a car movesaround the track, its DAPS unit will transmit during the appropriatetime slot to all base stations that can hear the signal. In step 140,DAPS 12 waits for its time slot. While waiting, it listens for incomingmessages. If a message is received (step 142), then the DAPS unit actson that message in step 144. More detail on the messages is providedbelow. If an interrupt is received, the method loops to step 146. Thesystem is set up so that an interrupt is sent to CPU 62 just prior tothe time slot for the particular DAPS unit. After receiving theinterrupt, the system will assemble the outgoing message in step 146.These outgoing messages include one or more GPS derived positionsreceived since the last message was sent and the data from the varioussensors received since the last message was sent. In step 148, thesystem will wait for the exact time for the time slot. In step 150, theassembled message will be transmitted during the allotted time slot. Inone embodiment, step 150 is performed two times per second.

[0058] Data is transmitted to and from the DAPS units using acommunication model having four layers: a physical layer, a link layerabove the physical layer, a network layer above the link layer, and acommand layer above the network layer. The structures of the messages ateach layer are provided below. TABLE 1 Physical Layer Syntax Bits FormatDescription PhysicalLayerHeader() { FrameSync 32 uimsbf Frame syncpattern PhysicalPayload Variable } Total Length 32 + Variable

[0059] At the link layer, all data transmissions are formatted in apacket. The link layer packet header and trailer encapsulate the networklayer packets Error checking is performed at the packet level. Thepacket header contains a CRC used by the interface hardware to correctlyassemble the proper number of bytes for a complete packet. The interfacehardware also uses the packet header to time synchronize the remotemodems. TABLE 2 Link Layer Syntax Bits Format DescriptionLinkLayerPacket() { LinkHeader() { PacketLength 8 uimsbf Length of datapayload SystemActive 1 uimsbf Set to command all remotes that areenabled to enter wake state SlotNumber 7 uimsbf Slot number for sourcemodem Clock Sync Bit 1 uimsbf Set if this is a clock synchronizationpacket SourceAddress 7 uimsbf Address of source modem HeaderCRC 16uimsbf Lower 16 bits of 32 bit CRC. CRC is computed from PacketLength toClockSyncBit. Polynomial = X³² + X²⁶ + X²³ + X²² + X¹⁶ + X¹² + X¹¹ +X¹⁰ + X⁸ + X⁷ + X⁵ + X⁴ + X² + X¹ + X⁰ The CRC calculation is seededwith 0×ffffffff. The result of the CRC computation is stored as the 1'scompliment of the result. } LinkPayload Variable uimsbf TrailerCRC 32uimsbf 32 bit CRC of header and payload. CRC starts from first byte ofLinkPayload and ends at end of LinkPayload. Polynomial = X³² + X²⁶ +X²³ + X²² + X¹⁶ + X¹² + X¹¹ + X¹⁰ + X⁸ + X⁷ + X⁵ + X⁴ + X² + X¹ + X⁰ TheCRC calculation is seeded with 0×ffffffff. The result of the CRCcomputation is stored as the 1's compliment of the result. } TotalLength 288 + Variable

[0060] The system also makes use a second version of a link layer packetfor communications between a base station and production center 50. Data5 originating from DAPS units passing through base stations will bestripped of their link layer (above) and will be shipped to theCommunications Controller computer 520 (see FIG. 13) with this reducedlink layer packet inside a TCP/IP packet. TABLE 3 Link Layer II SyntaxBits Format Description LinkLayer2Packet() { Link2Header() {SourceAddress 7 uimsbf Address of DAPS modem Pad 1 uimbsf preventsmisalignment } LinkPayload Variable uimsbf } Total Length 8 + Variable

[0061] The Network layer is used to assemble and delineate individualcommands. One packet may contain a partial, 0, 1 or more commands. TheNetwork Layer Header contains a length and sequence number. Withknowledge of the fragment length and packet length, the network parsercan loop through multiple packets and may re-assemble a packet whichspans packets. TABLE 4 Network Layer Syntax Bits Format DescriptionNetwork_Layer() { NetworkHeader() { FragmentLength 8 uimsbf Length ofcurrent fragment, including header. NetworkLength 10 uimsbf Length ofpacket, excluding header. This length represents the total length of theentire assembled network packet payload. PortNumber 2 uimsbf Stays thesame for all data coming from a particular socket on the originatingdevice. SequenceNumber 10 uimsbf Sequence number for all messages comingfrom a particular port. This increases with every message or fragment.This rolls over back to 0 only after 2^ 10 messages/fragments have beensent. NetworkStart 1 uimsbf This bit is set if this is the firstfragment of a command or a complete command. NetworkStop 1 uimsbf Thisbit is set if this is the last fragment of a command or a completecommand. } NetworkPayload Variable uimsbf Command payload. } TotalLength 24 + Variable

[0062] The Command layer is used to identify command types. Withknowledge of the length of each command type, multiple commands may beplaced in a packet TABLE 5 Command Layer Syntax Bits Format DescriptionCommand_Layer() { CommandHeader() { CommandNumber 8 uimsbf Denotes thecommand type } CommandPayload Variable uimsbf } Total Length 1 +Variable

[0063] Each modem is assigned an address. The one byte address space isbroken into three ranges which describe the type of station. TABLE 6Address Map Address Description 0 Address of the master base station.1-7 Address range for slave base stations.  8-254 Address range forremote stations.

[0064] Message Commands

[0065] The Command Number in the Command Packet Header describes thetype of command being sent. Commands may have 0, 1 or more bytes ofpayload. The size of the payload is command dependent. Various commandsare described below.

[0066] The Position Report, command 1, is the primary message sent fromthe DAPS unit to the base stations. It contains position and sensordata. TABLE 7 Position Report Syntax bits Format DescriptionPosition_Report() { LatitudeRef 32 simsbf Absolute Latitude LongitudeRef32 simsbf Absolute Longitude AltitudeRef 32 simsbf Absolute AltitudeTime (bits 0-31) 32 uimsbf Absolute time associated with firstlatitude/longitude and sensor report. LSB of time represents 0.01seconds. Time is offset from January 1, 1999. Time (bits 32-35) 4 uimsbfStandardDev 4 uimsbf the range of actual standard deviationNumberLatLonDeltas 4 uimsbf Number of Lat/lon deltas sent in thismessage NumberSensorReports 4 uimsbf Number of sample reports sent inthis message for (i = 0; i < NumberLatLonDeltas; i++) { LatitudeDelta 16simsbf Change in Latitude from previous sample LongitudeDelta 16 simsbfChange in Longitude from previous sample AltitudeDelta 16 simsbf Changein Altitude from previous sample Time Delta 8 uimsbf Change in time fromprevious sample } for (i = 0; i < NumberLatLonDeltas + 1; i++) {StandardDev 4 uimsbf range of actual standard deviation } If(NumberLatLonDeltas = odd) { NULL 4 uimsbf } for (i = 0; i <NumberSensorReports; i++) { RPM 16 simsbf engine RPM Throttle 8 uimsbfthrottle position Brake 8 uimsbf brake position Other Sensor 8 uimsbfdata from other sensor Time Delta 8 uimsbf change in time from lastsample } }

[0067] The Status Report message, command 2, is sent by the DAPS unitsto the base stations to report on various status parameters. TABLE 8Status Command Syntax Bits Format Description Status_Report() { Time(bits 0-31) 32 uimsbf Absolute time associated with firstlatitude/longitude and sensor report. LSB of time represents 0.01seconds. Time is offset from January 1, 1999 Time (bits 32-35) 4 uimsbfNULL 4 uimsbf Temperature 8 simsbf in centigrade Battery Voltage 16uimsbf one LSB = .001 V }

[0068] The base stations will broadcast the Enable Position Reportmessage, command 8, to enable a set of DAPS units to send positionreports (command type 1). TABLE 9 Enable Position Report Syntax BitsFormat Description EnablePositionReport() { AddressBitmap 256 uimsbfAddress bitmask is 256 bits (32 bytes) long. The bit position designatesa particular address LSB represents address 0, MSB represents address255. }

[0069] The base stations will broadcast the Wake Mode message, command9, to set all modems to wake mode. The SystemActive bit must be set inthe Link Layer Packet Header and the modem must have the address bitmaskbit set to enter wake mode. TABLE 10 Wake Mode Message Syntax BitsFormat Description EnableTransmissions() { AddressBitmap 256 uimsbfAddress bitmask is 256 bits (32 bytes) long. The bit position designatesa particular address LSB represents address 0, MSB represents address255. }

[0070] The base stations will send an Assign Time slot message, command10, to a DAPS unit to request that the DAPS unit start transmissions onthe specified time slot. TABLE 11 Assign Time slot Message Syntax BitsFormat Description AssignTime slot() { SlotNumber 8 uimsbf Slot numberfor transmissions Address 8 uimsbf Address of DAPS }

[0071] Any modem may send an Echo Data Request message, command 11, toany other modem. The receiving modem will extract the source addressfrom the packet header and send an Echo Data Response command back tothe source modem with the EchoData. TABLE 12 Echo Data Request SyntaxBits Format Description EchoDataRequest() { Address 8 uimsbf Address ofmodem being requested to echo data EchoData Variable uimsbf Data. May beany characters }

[0072] The Echo Data Response, command 12, is the response to theEchoData Request command. Any modem will respond to an Echo Data Requestcommand by sending the Echo Data Response message. TABLE 13 Echo DataResponse Syntax Bits Format Description EchoDataResponse() { Address 8uimsbf Address of modem which sent the Echo Data Request commandEchoData Variable uimsbf Data received in the Echo Data Request message}

[0073] The base station will send the Power Mode message, command 13, toa DAPS unit to request that the DAPS unit change the wake period andsleep period TABLE 14 Power Mode Message Syntax Bits Format DescriptionPowerMode() { AddressBitmask 256 uimsbf 256 bits (32 bytes) long. Thebit position designates a particular address LSB represents address 0,MSB represents address 255. WakePeriod 32 uimsbf The time between nowand when the device should wake up. SleepPeriod 32 uimsbf An intervalthat indicates to wake up every SleepPeriod interval and check for powermode messages. After a short time, it will go back to sleep if notinstructed otherwise. }

[0074] The time slot broadcast message, command 15, will request theDAPS units to set the period of their time slots. TABLE 15 Slot TimeMessage Syntax Bits Format Description SlotTime() { Time 8 uimsbf Periodin 100's of microseconds for each time slot }

[0075] The “number of slots” command, command 16, will be sent by thebase stations to request the DAPS units to set the total number of timeslots. TABLE 16 Number Slots Syntax Bits Format DescriptionNumberSlots() { NumberSlots 8 uimsbf Number of slots }

[0076] In one embodiment, the base stations will send RTCA command 17 tothe DAPS units to convey differential GPS information. In anotherembodiment, different commands can be used to convey different types ofdifferential GPS information. TABLE 17 RTCA Syntax Bits FormatDescription RTCA1Wrapper() { DataLength 8 uimsbf length of the Datafield. Data Variable uchar[len] Array of unsigned characters that shouldbe passed directly from the receiving modem to the GPS receiver }

[0077] The Debug command 20 is sent to convey special debugginginformation to the addressed device that is parsed and handled by anobject separate from the standard command hierarchy. TABLE 18 DEBUGSyntax Bits Format Description DEBUG() { DataLength 8 uimsbf length ofthe Data field. Data Variable uchar[len] Array of unsigned charactersthat should be passed directly to the DEBUG handling object. }

[0078] In one embodiment, the system will operate with 51 time slots.Two slots are reserved for transmit and receive transition, 6 time slotsare reserved for base stations and 43 time slots are reserved for remotestations. Time Slot Timing Parameters Cycle Period 0.500 sec Number timeslots 51 Time slot length 0.0098 sec Preamble time 0.0031 sec Data time0.0067 sec Bit Rate 148,640 bits/sec Total Data Bits 996 bits Total DataBytes 124 bytes/sec

[0079] The position of each DAPS unit is determined by using the GlobalPositioning System (GPS). GPS is a satellite based navigation systemoperated and maintained by the U.S. Department of Defense. GPS consistsof a constellation of GPS satellites providing worldwide, 24 hour, threedimensional navigational services. By computing the distance to GPSsatellites orbiting the earth, a GPS receiver can calculate an accurateposition of itself. This process is called satellite ranging. Theposition being tracked is the position of the antenna of the GPSreceiver.

[0080] Each GPS satellite carries an atomic clock to provide timinginformation for the signals transmitted by the satellites. Internalclock correction is provided for each satellite clock. Each GPSsatellites transmits two spread spectrum, L-band carrier signals-an L₁signal with carrier frequency f₁=1575.42 MHz and an L₂ signal withcarrier frequency f₂=1227.6 MHz. These two frequencies are integralmultiples f₁=1540f₀ and f₂=1200f₀ of a base frequency f₀=1.023 MHz. TheL₁ signal from each satellite uses binary phase shift keying (BPSK),modulated by two pseudorandom noise (PRN) codes in phase quadrature,designated as a C/A code and P code. The L2 signal from each satelliteis BPSK modulated by only the P code.

[0081] A GPS receiver measures distance using the travel time of radiosignals. To measure travel time of a GPS signal from the satellite to areceiver, the receiver will generate the same pseudo-random code as thesatellite and compare the generated code with the received code todetermine the shift between the two codes. The travel time is multipliedby the speed of light to determine the distance between the satelliteand the receiver. Along with distance, a GPS receiver needs to knowexactly where the satellites are in space. A calculation of a threedimensional location generally requires valid data from four satellites.GPS receivers can also provide precise time information.

[0082] The above described method of computing position requires veryaccurate synchronization of the satellite and receiver clocks used forthe time measurements. GPS satellites use very accurate and stableatomic clocks, but it is economically infeasible to provide a comparableclock in a receiver. The problem of clock synchronization iscircumvented in GPS by treating the receiver clock error as anadditional unknown in the navigation equations and using measurementsfrom an additional satellite to provide enough equations for a solutionfor time as well as for position. Thus, the receiver can use a lessexpensive clock for measuring time. Such an approach leads to thepseudorange measurement:

p=c(t_(rcve)−t_(xmit))

[0083] where t_(rcve) is the time at which a specific, identifiableportion of the signal is received, t_(xmit) is the time at which thatsame portion of the signal is transmitted, and c is the speed of light.Note that t_(rcve) is measured according to the receiver clock, whichmay have a large time error. The variable t_(xmit) is in terms of GPSsatellite time.

[0084] If pseudorange measurements can be made from at least foursatellites, enough information exists to solve for the unknown position(X, Y, Z) of the receiver antenna and for the receiver clock errorC_(b). The equations are set up by equating the measured pseudorange toeach satellite with the corresponding unknown user-to-satellite distanceplus the receiver clock error:

p₁={square root over ((x₁−X)²+(y₁+Y)²+(z₁+Z)²)}+c_(b)

p₂={square root over ((x₂−X)²+(y₂+Y)²+(z₂+Z)²)}+c_(b)

p₃={square root over ((x₃−X)²+(y₃+Y)²+(z₃+Z)²)}+c_(b)

p₄={square root over ((x₄−X)²+(y₄+Y)²+(z₄+Z)²)}+c_(b)

[0085] where p₁ denotes the measured pseudorange of the ith satellitewhose position in ECEF coordinates at t_(xmit) is (x₁, y₁, z₁,). Thereare four equations depicted above. The unknowns in this nonlinear systemof equations are the receiver position (X,Y,Z) in ECEF coordinates andthe receiver clock error C_(b). If more than four satellites are used,there will be an equation for each satellite.

[0086] There are a number of errors that are associated with GPSranging, including errors due to the Earth's ionosphere and atmosphere,noise, multipath satellite clock, and ephemeris errors. Additionally,basic geometry itself can based on the configuration of the satellitesin the sky can magnify the errors. The dilution of precision, a measureof error, is a description of the uncertainty of particular GPS data.

[0087] One enhancement to standard GPS technology includes thetechniques of differential GPS, which involves a reference GPS receiverthat is stationary and has its position accurately surveyed. Tounderstand differential GPS, it is important to know that satellitesignals have errors which have a high spatial and temporal correlation.So, if two receivers are fairly close to each other, the signals thatreach both of them will have traveled through virtually the same sliceof atmosphere, and will have virtually the same errors. Withdifferential GPS, the stationary reference receiver is used to measureerrors. The reference receiver then provides error correctioninformation to the other receivers (e.g. roving receivers). This way,systemic errors can be reduced. The reference receiver receives the sameGPS signals as the roving receivers. Instead of using timing signals tocalculate its position, the reference receiver uses its known positionto calculate timing. It figures out what the travel time of the GPSsignals should be, and compares it to what they actually are. Thedifference is used to identify the error information (also calleddifferential corrections or differential GPS data). The referencereceiver then transmits the differential corrections to the rovingreceivers in order to correct the measurement of the roving receivers.Since the reference receiver has no way of knowing which of the manyavailable satellites a roving receiver might be using to calculate isposition, the reference receiver quickly runs through all the visiblesatellites and computes each of their errors. The roving receivers applythe differential corrections to the particular satellite data they areusing based on information from the reference receiver. The differentialcorrection from the reference receiver improves the pseudorange positionaccuracy because its application can eliminate to varying degrees manyof the spatially and temporally correllated errors in the pseudorangemeasured at the rover receiver. A differential GPS reference receivercan also transmit its carrier measurements and pseudoranges to theroving receiver. The set of measurements and pseduoranges transmittedfrom the reference receiver can be used to improve the position accuracythrough the use of differential carrier positioning methods.

[0088] One embodiment of the present invention uses a track model toconstrain a GPS derived position. In one implementation, a track modelis a set of two or more planar surfaces which approximate the(contiguous or non-contiguous) surface (or surfaces) on which thenavigation takes place (or near where navigation takes place). A trackmodel can model may different types of surfaces, and is not confined toonly model a race track. In one embodiment, each planar surface isdefined by three vertex points and, thus, is a triangle. Other shapescan also be used. In one implementation, the constraint provided by thetrack model is that while the antenna is “within” the triangle, theposition of the antenna is constant in the direction normal to theplanar section. Based on a fixed antenna height, a planar constraint canbe defined with respect to the local planar section.

[0089] The track model positions are defined in WGS84 geographiccoordinates but the internal reference frame for the GPS filter is inECEF coordinates. This would not be a problem (the geographicco-ordinates can be simply transformed to ECEF vectors), except that thetriangle search engine (described below) requires a primarily twodimensional frame. This could be satisfied if the internal position wastransformed to geographic co-ordinates, but this transformation is timeconsuming, and it is possible that it may have to be carried out morethan once per solution. So, the system generates a local (orintermediate) frame representing the model and a simple transformationthat converts vectors in the ECEF frame to vectors in the local frame.The corner positions of all the triangles (in the ECEF frame) aredifferenced with a local “base position.” These are rotated to the localframe by the rotation matrix required to rotate a vector in the ECEFframe at the base position to a vector at the base position but in thegeographic frame. Local coordinates are generated in this manner for allthe points in the track model. The generation is as follows:

[0090] Coordinates of model point in the local frame:

P₁=R_(e) ¹*(P_(ECEF)−P_(BaseECEF))

[0091] where P_(BaseECEF) is the base position vector in the ECEF frame,P_(ECEF) is the track model position in the ECEF frame, and R_(e) ¹ isthe rotation matrix used to transform a vector in the ECEF frame to thegeographic frame at the base position.

[0092] If a triangle search is required (see below), the current GPSposition is transformed to the local frame via the same method and thesearch progresses as usual in that frame. Internally in the GPSreceiver, the coordinates for all the points in the track model aremaintained both in the ECEF frame and in the local frame. The constraintposition is generated from the ECEF coordinates, and the searchalgorithm is applied using the coordinates in the local frame. Thesearch algorithm described later finds an appropriate triangle. Thepreviously generated constraint position is taken from it and used as aseed position in the least squares pseduorange filter and as a positionupdate in the Kalman filter used to generate refined carrier basedpositons. In the pseudo range case, the 6 weight matrix elements forthat triangle constraint are expanded to generate a weight matrix P_(X)for the least squares filter. Alternatively, in the combined pseudorange/carrier observation case, the 6 elements representing the uppertriangular portion of the covariance matrix for that triangle constraintare expanded to generate a covariance matrix _(Cx) for the Kalmanfilter.

[0093]FIG. 5 is a flow chart describing the process for creating a trackmodel. In step 160, various locations on the ground at or near the racetrack (or other surface) that are easy to recognize are accuratelysurveyed. In step 162, aerial photographs are taken of the race track(or other surface). The photographs are taken from an aircraftapproximately 300 meters above the track surface and are overlapping sothat they capture each location on the race track and each of thesurveyed location from at least two angles. The location of the aircraftis recorded for each photograph (step 164). In step 166, photogrammetryis used to determine thousands of three dimensional coordinates alongthe track surface and location near the edge of the track. In step 168,the edges of the track surface are extracted. In some cases, the edgesof the track surface include an inner oval (or other shape) and an outeroval (or other shape). In step 170, the track surface is divided into aset of two or more sub-surfaces. In one embodiment, the sub-surfaces arepolygons (or other shapes). In one implementation, step 170 includesdividing the track into triangles using Delauney triangulation. In step172, the triangles are transformed from the geographic frame to thelocal frame as discussed above. In step 174, the triangles aretransformed to the ECEF frame. In step 176, the system computes thecovariance matrix C_(X) and the weight matrix P_(X) (described below)with respect to the ECEF frame for each triangle. In step 178, theentire track model space is divided into a grid. In one embodiment, thegrid includes 256 equally sized rectangles in the local frame.

[0094] In one implementation, the process of FIG. 5 is performed priorto a race (or other event). After the process of FIG. 5 is completed,the track model is available to the GPS receiver for use in determiningthe position of the GPS antenna.

[0095]FIG. 6 is a block diagram of the major components of oneembodiment of a GPS receiver that can be used with the currentinvention. Other receiver configurations and designs can also be usedwith the current invention. FIG. 6 shows antenna 14 connected tolow-noise amplifier (“LNA”) 200. LNA 200 is connected to RF to IFtranslation unit 202, which translates the incoming RF signal to an IFsignal usable by the digital section of the receiver. RF to IFtranslation unit 202 supplies power to LNA 200 and receives a clocksignal from on-board 20MHz voltage controlled, temperature compensatedcrystal oscillator (VCTCXO) 210. The digital section of the receiverreceives a down-converted, amplified GPS signal which it digitizes andprocesses to obtain a GPS solution (position, velocity and time). TheGPS signal is sent from RF to IF translation unit 202 to signalprocessor 204. In one embodiment, the analog to digital converter ispart of signal processor 204 and receives the signal from RF to IFtranslation unit 202. In another embodiment, the analog to digitalconverter is a separate component between RF to IF translation unit 202and signal processor 204. Signal processor 204 receives a clock signalfrom VCTCXO 170, provides a clock signal to CPU 206 and sendsinformation back to RF to IF translation unit 202 (see signal AGC).Signal processor 204 receives control signals from CPU 206 and providesdata to CPU 206. Information is transmitted between CPU 206 and systemI/0 208 for communication with components outside of the receiver.Differential GPS data is provided to the GPS receiver via system I/0208. Not explicitly depicted in FIG. 2 are various supporting circuitry,memory (which may be part of the CPU), control and configuration logic,and serial peripheral devices, each of which can be separate componentsor part of one of the depicted components (including the processor). Oneexample of a GPS receiver is the OEM4 from Novatel, Inc.

[0096]FIG. 7 is a flow chart describing one embodiment of the operationof a GPS receiver according to the present invention. In step 240, oneor more signals from a set of satellites are received. In step 242,psuedoranges are determined. FIG. 7 shows that after step 242, twoindependent processes are performed. The first process includes steps244-248. The second process includes steps 250-260.

[0097] In step 244, differential corrections are received from thedifferential reference receiver. In step 246, the system accesses thetrack model and determines the appropriate planar surface to use forconstraining the GPS determined position. In one embodiment, the trackmodel is comprised of a set of triangles and step 246 includesdetermining which triangle represents the portion of the track that thereceiver is currently on (or within). In one implementation, there arefour relevant frames: (1) ECEF, (2) local frame, (3) geographic frame(e.g. WGS84), and (4) the planar surface (or triangle) frame. Oneembodiment of the track model is originally created and broken intotriangles in the geographic frame. All of the vertices of the trianglesare converted to the local frame and the ECEF frame prior to the race(or other event). The position supplied to the search mechanism of step246 is converted from ECEF to the local plane in real-time and thesearch mechanism operates in the local frame. The result of the searchmechanism is an identification of a triangle in the local plane, whichis used to access the three vertices of the triangle already convertedto the ECEF frame. In step 248, the GPS receiver performs a leastsquares process using the triangle identified in step 246.

[0098] In step 250, the system receives pseudoranges and carriermeasurements from the reference receiver. In step 252, the systemdetermines carrier measurements. In step 254, the system performs thedouble difference/carrier filter. In step 256, the system determines theappropriate triangle. In step 258a floating ambiguity estimator is used,which provides a position covariance. In step 260, ambiguities are fixedusing an integer ambiguity estimator. More detail about steps 252-260are provided below.

[0099] In step 262, the system chooses the best position to report,based on the least squares process, the floating ambiguity estimator andthe integer ambiguity estimator. In step 264, the position determined bythe GPS receiver is reported. In one embodiment, reporting includestransmitting an electronic message to a client device so that theposition, velocity and time can be stored, used, displayed, etc. In adifferent alternative, the receiver will initially report the positionbased on step 248, and after a predesignated amount of time orcalculations the receiver will report the position based on steps 258and 260.

[0100]FIG. 8 is a flow chart that describes the process of determiningwhich triangle of the track model the receiver is currently navigatingon. In step 300, the process receives a position of the receiver. In oneembodiment, the position received in step 300 is the position generatedby the GPS receiver at the last epoch. In another embodiment, theposition received in step 300 is a current position determined by theGPS receiver without using the track model constraint.

[0101] In one implementation, the process of FIG. 8 is performed twice:once for the least squares process and once for the Kalman filter. Whenperforming the process of FIG. 8 for the least squares process, step 300includes receiving the position generated by the GPS receiver at thelast epoch for the least squares process. When performing the process ofFIG. 8 for the Kalman filter, step 300 includes receiving the currentposition determined by the GPS receiver without using the track modelconstraint for the Kalman filter.

[0102] In step 302, the receiver determines the rectangle in the trackmodel space (see step 176) that contains the position received in theprevious step. If no such rectangle is found (step 304), than theprocess reports in step 306 that the position is not within a triangleand the track model cannot be used to constrain the GPS position. If arectangle is found (step 304), then the GPS receiver accesses one of thetriangles within the rectangle in step 308 and determines whether theposition (from step 300) is in (or on) the triangle in step 310. Atriangle is in a rectangle (for purposes of step of 308) if any part ofthe triangle is within the rectangle. Thus, a triangle can be in manyrectangles and a rectangle may contain many triangles. Step 310 can beperformed by comparing the coordinates of the vertices of the triangleto the position from step 300. If the position is within the triangle(step 310), then the process of FIG. 8 identifies the triangle in step312. If the position was not in the triangle (step 310), then theprocess determines whether there are more triangles in the rectanglethat need to be considered (step 314). If there are more triangles toconsider, then the method loops back to step 308. If there are no moretriangles to consider, then the process reports in step 316 that theposition is not within a triangle and the track model cannot be used toconstrain the GPS position.

[0103] Step 248 includes using a least squares process with theidentified triangle. The least squares process is described below. Themodification required to constrain to a planar surface follows.

[0104] The least squares filter generates corrections to the system'sECEF position and clock according to the equation:

δX=(A^(T)PA)⁻¹A^(T)Pω

[0105] where δX=correction vector to position vector and clock[X,Y,Z,Clk]^(T) A=design matrix (n×4) based on satellite to receivergeometry

[0106] In detail A=[A₁, A₂, A₃...A_(n)]^(T)

[0107] And A_(i)=[∂R^(i)/∂X, ∂R^(i)/∂Y, ∂R^(i)/∂Z,1]

[0108] With R¹=((X^(i)−X)²+(Y^(i)−Y)²+(Z^(i)−Z)²)^(1/2)

[0109] X,Y,Z=ECEF user position

[0110] X^(i), Y^(i), Z^(i)=ECEF satellite position P=Pseudo rangeobservation weight matrix (nxn) which is diagonal, with the diagonalentries being the reciprocal of the variance entries of the pseudoranges; and ω=The vector of misclosures between the theoreticalobservations based on the current satellite set and the last set ofpositions estimated, and the actual observations (pseudo ranges). Thevalues of X, Y, Z at the first iteration are the constrain position,X_(cp). At later iterations, the position remains somewhat close toX_(cp), with the vertical component of the position being especiallyclose to the vertical component of X_(cp)

[0111] So:

ω=R_(obs)−R¹−Clk

=R_(obs)−((X¹−X)²+(Y^(i)−Y)²+(Z^(i)−Z)²)^(1/2)−Clk

[0112] R_(obs) is based on the measured pseudoranges. At everyobservation time, the process is repeated until the length of the vectorof corrections (δX) to the position/clock parameter vector is smallenough. In some cases, this may be accomplished after two iterations. Ateach epoch, the previous position and clock estimate is used to startthe process, but any covariance information associated with thatestimate is ignored. This means that at every epoch, at least 4satellites are needed to estimate the 4 elements on the position/clockvector. If information related to the position/clock parameters wereavailable, then this could be included in a modified least squaresprocess according to the following:

δX=(A^(T)PA+P_(x))⁻¹A^(T)Pω

[0113] where P_(X)=Parameter weight matrix (4×4) based on knowledge ofthe parameters includes in the estimation process.

[0114] If certain elements of the parameter vector are well known, thenthis knowledge can be incorporated in the system by making theappropriate diagonal elements of the parameter weight P_(x) large. If,for example, the clock estimate has a standard deviation of ½ m, thenthe P_(x) entry P₄,₄ would be 4, and one less satellite would berequired in the estimation process to generate a 4 parameter solution.

[0115] There are more complications if the knowledge of height is to berepresented by this system. Height is in the geographic reference frame;therefore, the covariance information for height must be transformedfrom the geographic frame to the ECEF frame before it can be used by thesystem in the estimation process. The P_(X) matrix is:

P_(x)=C_(x) ⁻¹=(J^(T)C_(g)J)⁻¹

[0116] where:

[0117] C_(g)=the covariance matrix of the position/clock in thegeographic frame;

[0118] J=the matrix of derivatives of the transformation ofposition/clock from the geographic to the ECEF frame; and

[0119] C_(x)=the covariance matrix of position/clock in the ECEF frame.

[0120] In the case of the track model application, J is not the rotationmatrix used to transform a vector from the geographic to the ECEF frame,but instead a rotation matrix used to transform a vector from the planarsection frame to the ECEF frame. The J matrix is used to set up theweight and covariance matrices of the constraint positions, and thesematrices are pre-computed prior to the race. The J matrices are notrequired except for this, so in one embodiment they aren't retained foror recomputed during the race. The J matrix can be generated byrepresenting three basis vectors, describing the planar section frameand a normal to it, in the ECEF frame. The positions of the vertices ofeach triangle are transformed from the geographic to the ECEF frame. Thedifferences of these vectors are parallel to the planar section, and thecross product of two of these difference vectors provides a normalvector to the planar section. The cross product of the normal vectorwith either of the vector differences generates a vector parallel to theplanar section and orthogonal to the other two vectors used in the crossproduct. Finally, normalizing these three vectors provides a set oforthonormal basis vectors representing the planar section frame in ECEFco-ordinates. So this set of vectors can be concatenated to generate J,the 3 by 3 rotation matrix used to rotate a vector from the planarsection frame to the ECEF frame. Symbolically:

J=[B₁|B₂|B₃]

[0121] where B₁,B₂, B₃ are the basis vectors whose construction isdefined in the previous paragraph.

[0122] The constraint position is given by the average of the threecomer positions in the ECEF frame plus the constraint position relativeto the planar section, transformed to the ECEF frame. Symbolically, thisis:

Constraint position: X_(cp)=((X₁+X₂ +X₃)/3.0)+J *[0,0,h_(a)]^(T)

[0123] where X₁, X₂, X₃ are the ECEF positions of the planar sectioncomers, and ha is the antenna height with respect to a level planarsection.

[0124] Looking back at FIG. 7, the process of steps 250-260 will beexplained in more detail. The system uses a Kalman filter with the trackmodel. This process is also known as the RT20 process. The RT20 processgenerates estimates of the relative position between a reference GPSreceiver and a roving GPS receiver as well as estimates of floatingambiguities related to the double difference carrier observations forthose two receivers. In one embodiment, the RT20 process provides a bestavailable solution when real-time kinematic (RTK) data is not availableas well as providing an initial search space for the RTK carrier basedprocess.

[0125] Carrier positioning is a process in which a relative positionbetween two ground sites (a base station and a roving receiver) iscomputed based upon observed fractional phase differences and knownwhole cycle differences between the two receivers. The fractional andwhole cycle differences together produce a synthetic observation whichis equal (when converted to meters) to the geometrical difference indistance between the two receivers and the satellite they are bothobserving. Knowledge of the whole cycle portion of the syntheticobservation cannot normally be determined directly from theobservations, but must be determined indirectly from many observationsover time during what is known as a whole cycle resolution process. Thewhole cycle difference is also known as a carrier ambiguity, and theresolution process is known as an ambiguity resolution process.

[0126] In one process, in order to resolve fixed integer ambiguities, aninitial guess of the position difference is made and a series of sets ofambiguity candidates is selected such that each set will generate aposition difference that is close to the one chosen in the initialguess. Each set is used to compute a position difference and anassociated set of residuals. For each set, these residuals areaccumulated and the accumulation compared to a theoretical accumulationand also to other accumulations in the series of candidate sets. If thecorrect set of ambiguities is in the series, then eventually itsresidual accumulation will be close to the theoretical accumulation andalso smaller than any of the residual accumulations for the other sets.At this time the correct ambiguity set is known and can be used togenerate relative positions with carrier type accuracy.

[0127] To summarize, there are two things that are done to resolveambiguities:

[0128] (1): Guess at an initial position, and an associated search spacewhose size is based on the precision of the initial position estimate;and

[0129] (2): Use the guess and its precision to define a series ofcandidate sets of ambiguities and then accumulate computed residualsover time and eliminate sets whose residual accumulation exceeds somekind of threshold.

[0130] Typically a Kalman filter with both position and ambiguity statesis used to define an initial guess for the search space. It is run inreal-time as carrier and pseudo range observations are provided to itand some kind of executive routine monitors its position covariance tosee when the search space can be defined and search can commence. Byincluding position constraints with the GPS observation set, theprecision of the initial position estimate used to define the searchspace can be reduced sooner and more, and this should significantlyspeed up the resolution process.

[0131] The Kalman filter used to estimate position and floatingambiguity states can be described as follows:

State: X=[x,y,z,N1,N2,...Nk]

[0132] State Initial Covariance: P=[big diagonal elements, 0 offdiagonal elements]

[0133] The design matrix H defines the linear relationship between thedouble difference observation (satellites r,j and the two receivers) andthe state elements. For satellite j and reference satellite r the phaserelationship is:

H=[Δx^(r) _(m)/R^(r) _(m)−Δx^(j) _(m)/E^(j) _(m), Δy^(r) _(m)/R^(r)_(m)−Δy^(j) _(m), Δz^(T) _(m)/R^(r) _(m)/Δz^(j) _(m)/R^(j) _(m),0,0,...1,0,...0];

[0134] The pseudorange relationship is:

H=[Δx^(r) _(m)/R^(r) _(m)−Δx^(j) _(m)/E^(j) _(m), Δy^(r) _(m)/R^(r)_(m)−Δy^(j) _(m), Δz^(T) _(m)/R^(r) _(m)/Δz^(j) _(m)/R^(j) _(m),0,0,...0,...0]

[0135] The Kalman filter mechanization is as follows:

Gain: Kk=P_(k)(−)H_(k) ^(T)[H_(k)P_(k)(−)H_(k) ^(T)+R_(k)[⁻¹

Covariance Update: P_(k) (+)=[I−KH_(k)]P_(k)(−)

State Update: X_(k)(+)=X_(k)(−)+K_(k)[Z_(k)−H_(k)X_(k)]

[0136] where R=Observation covariance matrix (scalar for phase andpseudo range observations) and is the same as the C_(x) matrix (below)for the position update; and z=Observation (pseudo range or carriermeasurement)

[0137] In the pseudo range and phase measurement implementation, theobservations are decorrelated and the updates are done serially, one foreach observation. With the position constraint information from thetrack model, the observation/state relationship is:

H=|1,0,0,0,...,0||1,0,0,0,...,0||1,0,0,0,...,0|

[0138] H=[I,0] with I=3x3 and 0=3x(n−3), (n=number of states) and C_(x)is the covariance matrix of the constraint position:

C_(x)=J^(T)C_(t)J

[0139] where C_(t)=The covariance matrix of the position in the“triangle” (or planar section) frame; and J=The rotation matrix used torotate a vector from the triangle frame to the ECEF frame.

[0140] In one embodiment, the covariance matrix of the position in thetriangle frame can be defined as: $C_{t} = \begin{matrix}{{10000,}} & {0,} & {0} \\{{0,}} & {10000,} & {0} \\{{0,}} & {0,} & {0.0001}\end{matrix}$

[0141] that is, the parallel elements are more or less unknown, and thenormal element is known to 10 cm at 1 sigma.

[0142] The results of the RT20 process is a vector which can be appliedto the base station ECEF position (also transmitted to the localreceiver with the differential observations) to give an ECEF position ofthe local receiver. The RT20 vector becomes more accurate as time goeson, so the local position accuracy also becomes more accurate.

[0143] The RT20 filter computes a vector between the base station andthe local or rover receiver. In the absence of any track model thederived position will be Base Position plus RT20 vector. If the basestation coordinates are in error relative to the relevant frame, thenthere will be a reported mismatch between the items in the true ECEFframe and the ECEF positions reported by the receiver. In order toaccount and remove this mismatch, the base station's transmittedposition can be shifted by the amount of the mismatch and then the trueand reported positions should be the same.

[0144] The mismatch is determined by a reconciliation process that isdone prior to each race (or other event). In one embodiment, the data isreconciled by shifting the base station coordinates in the track modelby an offset. The offset is determined by comparing the position of astationary object in the track model with an accurately surveyedposition for that object. In another embodiment, the reconciliationprocess is determined by comparing the track model normal constraintwith the precise GPS position in the direction normal to the track modelsection applicable to the GPS position. This comparison is given by ω:

ω=R_(e) ^(p) _((Row 3))(Pos_(RT)−Pos_(TM))

[0145] where R_(e)^(P=the rotation matrix used to transform a vector from the ECEF to “triangle” frame;)

[0146] POS_(RT)=the unconstrained GPS ECEF position and POS_(TM)=thetrack model constraint position in the ECEF frame;

[0147] Note that co is just the third element of the vector, becausethis is the part in the direction normal to that pertinent triangle.

[0148] The following estimation process can be used to determine theoffsets required to reconcile the base station and track model referenceframes. The offset between the base station frame and the track modelframe is reflected in triangle frame coordinates as x^(t) ₃=x^(e)o n₃.The observation equation that models this vector component is:

ω=x^(e)o n₃=R_(e) ^(p) _((Row 3))(Pos_(RT)−Pos_(TM))

[0149] or

ω=x^(e)o n₃=U₃ ^(T)R_(p) ^(e)(Pos_(RT)−Pos_(TM))

[0150] where:

[0151] x^(e)=Base station shift in the ECEF frame,

[0152] x^(t) ₃=z component of base station shift in triangle frame

[0153] n₃=normal vector to the triangle in the ECEF frame, R_(p)^(e=the rotation matrix used to transform a vector in “triangle frame” coordinates to the ECEF frame; U)₃=unit vector normal to the triangle in the “triangle frame”U₃=[0,0,1]^(T); and o =dot product operator.

[0154] Note that n₃ is simply the transpose of the last column of R_(p)^(e). A least squares estimate can easily be generated from this ω via

X=(Σ(A^(T)A))⁻¹Σ(A^(T)ω)

[0155] where:

A₁=n_(3i)=R_(p) ^(e) ₁U₃

[0156] The summation goes from i=1 to the number of RTK observations onthe model. In order for this to work, a model with reasonable variationof normal vectors has to be used if all three components are to beobservable.

[0157] The track model constraints improve the positioning accuracysignificantly, up to a factor of 10 in many cases and sometimes more. Inmost cases, the improvement is in height, but in conditions of poorgeometry the horizontal accuracy is also much better (sometimes morethan 100 times better) in the constrained case. The horizontal accuracyalso improves depending on the slope of the constraining section withrespect to the local level because if there is a significant slope, thena component of the planar section's normal vector will be parallel tothe local level plane.

[0158] In some embodiments, the track model is extended (extrapolated)outside the ribbon of the track so that bad geometry cases also have theuse of a planar constraint.

[0159] In some embodiments, the track model constraints only work in thecases where there are at least four satellites. In other embodiments,the track model can be used when providing a degraded solution byaccepting fewer observations as the required minimum number in eitherthe least squares process or the RT20/Kalman filter.

[0160]FIG. 9 is a block diagram of a base station. FIG. 9 shows 900 MHztransmitter and receiver 340 connected to antenna 342 and computer 344.Computer 344 is connected to DSL modem 346, which is in communicationwith a DSL modem at production center 50. In general, each base stationreceives communications from all the cars with DAPS units that are inrange of the base station and forwards the received information toproduction center 50. In addition, information from production center 50is received by all of the base stations and retransmitted to all of theDAPS units within range of the particular base stations.

[0161]FIG. 10 is a flowchart describing the operation of a base station.In step 360, the system waits for its allotted time slot. While waiting,the system is listening for incoming messages from DAPS units. If anincoming message is received (step 362), that message is communicated tocommunication control computer 520 (see FIG. 13) at the productioncenter 50 in step 364 and the method loops back to step 360. If aninterrupt is received (step 362), then the system determines whetherthere is any data to send to the DAPS units (step 366). If there is nodata to send, the method loops back to step 360. If there is data tosend, the message is assembled in step 368. The system waits for itstime slot in step 370 and transmits the message during its time slot instep 372. After step 372, the method loops back to step 360. Themessages sent in step 372 are messages that originated from theproduction center 50.

[0162]FIG. 11 depicts an example of a camera location, including camera392 with camera sensors 390. The camera sensors could include any or allof the following: optical shaft encoders, fiber optic gyros,inclinometers, and reading voltages from the lens (e.g. 2X Extender,focus, zoom). More information about camera sensors and cameras can befound in U.S. patent application Ser. No. 09/472,635, “Measuring CameraAttitude,” filed on Dec. 27, 1999, incorporated herein by reference.Other camera sensors can also be used. Data from camera sensors 390 aresent to production center 50. In one embodiment, the camera sensor datafor a given camera is transmitted to production center 50 via thecamera's audio channel. The production center includes hardware todemodulate the audio channel. In some instances, the production centeris in a truck at the event. The video from camera 392 is sent to cameracontrol unit 394, which controls various video and optical parametersfor camera 392. The output of camera control unit 394 is sent to VITCinserter 396 which adds a time code and unique camera identifier intothe vertical blanking interval of the video from camera 392. The outputof VITC inserter 396 is transmitted to production center 50. The presentinvention can be operated using one or more instrumented cameras. In oneembodiment, the present invention is operated with six instrumentedcameras. Each of the six cameras has its own CCU and its own VITCinserter. Each camera=s VITC inserter is synchronized with master VITC506 (see FIG. 13). In alternative embodiments, the present invention canbe used with fixed, non-instrumented cameras. In another alternative,the present invention can be used with non- instrumented cameras thatare not fixed, in combination with image recognition.

[0163]FIG. 12 shows a block diagram of the electronics for using thecamera attitude sensors. FIG. 22 shows pan encoder 400, tilt encoder402, gyro 404, gyro 406, inclinometer 408 and inclinometer 410. Theoutput of pan encoder 400 and tilt encoder 402 are sent to FPGA 412. Panencoder 400 and tilt encoder 402, in one embodiment, are opticalencoders that output a signal which is measured as a number of counts(or pulses) that indicate the rotation of a shaft. The output signal isa quadrature signal indicating rate and direction. FPGA 412 decodes thesignal from the optical encoders to output a count. FPGA 412 alsocontrols analog to digital converter 414 and provides interface logicfor processor 416. In regard to the analog to digital converter 414,FPGA 412 provides interface logic and a buffer, including a register tostore a value for each sensor connected to analog to digital converter414.

[0164] Gyro 404 is connected to interface board 420, which is connectedto analog to digital converter 414. Interface board 420 compriseselectronics for receiving a signal from gyro 404 and presenting theinformation to analog to digital converter 414. The electronics of board420 includes a differential amplifier and other electronics which canreject common mode noise and amplify the signal from the gyro. Theoutput of gyro 406 is connected to interface board 422. Interface board422 operates in the same manner as interface board 420 and is alsoconnected to analog to digital converter 414.

[0165] Signal 424 represents the electrical output of the zoom lenspotentiometer of the camera and is connected to analog to digitalconverter 414. Signal 426 represents the electrical output of the 2Xextender of the camera and is connected to analog to digital converter414. Signal 428 represents the connection to the lens of the camera,provides the value of the focus of the camera and is connected to analogto digital converter 414.

[0166] The output of inclinometer 408 is connected to interfaceelectronics 430. The output of inclinometer 410 is connected tointerface electronics 432. The outputs of interface board 430 andinterface board 432 are both connected to analog to digital converter414. Analog to digital converter 414 converts the input analog signalsto digital signals, and sends the output digital signals to FPGA 412.FPGA 412 includes a register for each of the sensors.

[0167] Processor 416 is in communication with data memory 436 forstoring data and program memory 438 for storing program code. In onealternative, memory 438 is a flash memory and memory 436 is a staticRAM. In one embodiment, processor 416 is an 8032 processor from Intel.Processor 416 also receives an output signal from sync decoder 440. Syncdecoder 440 receives a video signal 450 from the camera and generates async signal so that the data from the sensors can be synchronized to thevideo. In one embodiment, the video is transmitted at 30 frames persecond. Other video rates can also be used. Processor 416 assembles datafrom each of the sensors into a packet and sends the data to modulator444. Processor 416 assembles the data using the sync signal so that datais collected and sent in synchronization with the video from the camera.For example, data can be sent for every field, every video frame, everyother video frame, every third video frame, etc.

[0168] Modulator 444 receives the packet of data from processor 416 andencodes data for transmission on an audio frequency signal. The outputof modulator 444 is sent to audio driver 446 and coax driver 448. Mostbroadcast cameras have a microphone input channel. The output of audiodriver 446 is sent to the microphone input channel for the camera. Thecamera then combines the audio input channel with the video and sends acombined signal to the production equipment. If the audio signal isneeded on a coax cable, then that signal is received from coax driver248. In one embodiment, there can also be an RS232 or RS422 outputdirectly from processor 216. More information about the system of FIG.12 can be found in U.S. patent application Ser. No. 09/472,635,“Measuring Camera Attitude,” filed on Dec. 27, 1999, incorporated hereinby reference.

[0169]FIG. 13 is a block diagram of production center 50. Audiodemodulator 50 receives the audio signals from each of the cameralocations and demodulates the signals to remove the camera sensor data.The data is sent to gather computer 502, which is a Pentium basedpersonal computer. Gather computer 502 acts as a central dataconcentrator, logger, synchronizer and forwarder. The computer receivescamera data from the instrumented cameras and time code data from VITC506. Gather computer 502 synchronizes and consolidates the time code andcamera sensor data streams and forwards the data to race computer 504via a serial line. Gather computer 502 is used to stamp VITC on thecamera sensor data stream.

[0170] Race computer 504 receives program video with time code (via VITC506), camera data from gatherer 502, vehicle data from communicationcontrol computer 520 and the camera identification information from theprogram video. Race computer 504 determines what camera is being used toprovide the broadcast video (based on the camera identification insertedby VITC 396), what camera sensor data to use, what vehicles are selectedto be highlighted and what data needs to be depicted in the video. Ituses this information to send render computer 508 a description of thegraphics to draw. Note that race computer 504, render computer 508,Tsync computer 534, communication control 520 and Booth UI computer 532all communicate via an Ethernet.

[0171] Render computer 508 uses the information from race computer 504to create an appropriate key and fill signals which are sent to keyer510. Keyer 510 uses the key signal from render computer 508 to blend thegraphics defined by the fill signal with the program video. The programvideo is provided to keyer 570 from video delay 512, which receives theprogram video from VITC 506. In one embodiment, all the cameras from anevent send their video to a video production truck. The video productiontruck will include a switcher for choosing a video signal for broadcast.That chosen signal will be sent to VITC 506.

[0172] In one embodiment, gather computer 502, Tsync computer 534,communication control computer 520 and booth UI computer 532 arepersonal computers. Race computer 504 and render computer 508 are 02computers from Silicon Graphics.

[0173] Communication control computer 520 is connected to DSL modems522, 524, 526 and 528. Each of these DSL modems are in communicationwith a DSL modem at a base station. In one embodiment, there is one DSLmodem connected to communication control computer 520 for each basestation. Communication control computer 520 controls the flow ofinformation between the DAPS units, the base stations and the productioncenter 50. Communication control computer 520 communicates with the basestations via the DSL modems (in one embodiment over the same Ethernet asdescribed above). Communication control computer 520 also receivesdifferential GPS data from the GPS reference station 20 and sends thatdata to the base stations for transmissions to the DAPS units.

[0174] Booth UI computer 532 has a touch screen which displays all theavailable enhancements that the system can perform. An operator cantouch the screen to choose a particular enhancement. This selection ofenhancements is sent to communication control computer 520 and racecomputer 504.

[0175] Race computer 504 presents feedback to the booth UI, computer 532which is transformed into a visual representation ofconfidence-of-measure and availability This is on a per-DAPS basis, andworks for other DAPS equipped targets such as roving announcers. Racecomputer 504 also disables effects/enhancements if certain conditions(such as being in RT20 or better or having 2.5 meter standard. deviationor smaller) are not met. Race computer 504 smoothes small gaps in datavia interpolation. The race computer also stores data (camera and DAPS)for use in replay (when used in concert with a tape striped with VITC506). Render computer 508 interpolates the 2d coordinates of the objectsin video between frames (i.e. field interpolation) since race computer504 only computes positions per-frame.

[0176] Tsync computer 534 is used to synchronize video time to GPS time.Tsync 534 is connected to a Trimble Pallisades GPS receiver 536, VITCreader 535 and VITC 506. FIG. 14 is a flowchart describing the operationof Tsync 534. GPS receiver 536 outputs the GPS time to Tsync 534 via anRS 422 line once per second. This message contains time, date andstatus. The receiver also outputs a 1 Hz pulse. At (within 1 us of) thetop of every second, the pulse signals the time. Some millisecondslater, the message is output. Tsync computer 534 receives these eventsand records the PC system time when the events happen in step 540. Tsynccomputer 534 has a vertical sync detector installed on one of the ISAslots. This board generates an interrupt signal once at the beginning ofevery odd field (step 542). When this interrupt occurs, the Tsynccomputer 534 PC records the PC time. Tsync 534 is also reading VITC datafrom the VITC reader 535 (step 544). When the last character of a VITCpacket is received, the VITC time (video time) is recorded. Tsynccomputer 534 interpolates between GPS time values, to determine a GPStime at the start of a frame. This determined GPS time is matched to theVITC value for that frame in step 546. In step 548, a message is sentfrom Tsync 534 to communication control 520 indicating a GPS time at thebeginning of a frame and the VITC time at the beginning of the sameframe. This relationship is used by the system to match GPS data withthe appropriate video frame (see step 564 of FIG. 15, below).

[0177]FIG. 15 is a flow chart describing the overall process performedat production center 50. In step 550, real loop data is received bycommunication control computer 520. FIG. 16 describes a system forproviding real loop data.

[0178]FIG. 16 shows receivers 602. Only three receivers are depicted inthe figure, however, it is contemplated that more or less than threereceivers can be used. FIG. 16 also shows loops 604 connected to thereceivers. Each loop is connected to one receiver. In one alternative,one receiver may service multiple loops. FIG. 16 shows the loop with arectangular-like shape. However, the current invention contemplatesother shapes being used. The receivers are connected to data gatherer606 via a network (e.g. Ethernet). Data gatherer 606 is connected tocomputer 608. FIG. 16 also shows transmitter 610 which transmits an RFsignal to loop 604. Instead of an RF signal, an inductive coupling canalso be used.

[0179] In the embodiment for use with an auto race, each car would havea transmitter 610 (or transponder) mounted on the car that uniquelyidentifies the car by transmitting a unique code or frequency. Loops 604are located below the surface of the race track, road or other surface.As the transmitter passes over a loop, the loop receives a signal fromthe transmitter. Based on the received signal, receiver 602 identifiesthe transmitter and the time when the signal was received and stoppedbeing received. Receiver 602 sends this information to data gatherer606. Data gatherer 606 compiles all the information from all thedifferent receivers 602 and sends the compiled information to computer608 for final analysis and storage. Data can then be sent from computer608 to communication control computer 520. In one embodiment, thefunctions of data gatherer 606 and computer 608 can be performed by asingle device. In another embodiment, data gatherer 606 may perform someof the calculations (e.g. speed and position) and then send a smallerdata stream to computer 608.

[0180] In one embodiment, loop 604 is an insulated electrical wire.Loops other than wires can be used. In one embodiment, loop 604 acts asan antenna receiving RF signals. In another embodiment, loop 604 is usedas a component of an inductive coupling system. Loops are typicallyplaced below the surface of the road or track. Most loops will detectthe presence of a transmitter crossing over the middle of the loop withsub-millisecond accuracy and a resolution of better than oneten-thousandths of a second. In one embodiment, the loop and transmittershould be mounted such that they are within twenty four inches of eachother when the transmitter is passing over the loop. One implementationincludes only using one loop 604, and locating that loop at the FinishLine of the race track.

[0181] Receiver 602 processes the raw signals picked up by loop 604. Inone embodiment, it is the job of receiver 602 to convert the raw signalsinto digital information that can be transmitted to data gatherer 606.Each receiver stores a transmitter identification number, the crossingtime and other data for each detection of a signal. Under normaloperation, the data from the receiver is uploaded and processed asinformation is received from the loop

[0182] Looking back at FIG. 15, step 550 includes receiving loop datafrom computer 608. After receiving the real loop data in step 550, thesystem receives and processes data from the DAPS in step 552. That is,communication control 520 receives data from the base stations that wasoriginally transmitted from the DAPS units. In step 554, camera sensordata is received via audio demodulator 500 and gatherer computer 502. Instep 556, program video is received. In step 558, race computer 504and/or communication control 520 will access the selections of what datato display, which were inputted via booth UI computer 532. In step 560,the selection of objects to highlight will be accessed by communicationcontrol computer 520. In step 562, race computer will determine whichcamera sensor data to use. That is, each of the video signals had aunique identifier added to the vertical blanking interval (VBI). Racecomputer 504 will read the VBI of the program video and determine whichcamera was selected for broadcast. Then, the camera sensor data receivedvia gatherer 502 for the chosen camera will be accessed in step 562. Instep 564, the appropriate GPS position data will be accessed by racecomputer 504. In one embodiment, communications control computer 520sends all of the data to race computer 504 and race computer 504 picksout the data that it needs. In step 566, the video is enhanced. In step568, the enhanced video is transmitted for broadcast or storage on atape or other medium. The steps of FIG. 15 do not necessarily need to beperformed in the order depicted in the drawing.

[0183]FIG. 17 is a flowchart describing the method of receiving andprocessing data from the DAPS units (step 552 of FIG. 15). In step 570,a message is received from a DAPS unit, via a base station, atcommunication control computer 520. In step 572, communication controlcomputer 520 accesses the data in the message and stores the data inlogs.. In step 574, any data that has already been received bycommunication control 520 will be discarded. In step 576, data that hasnot been discarded is stored in a log. In step 578, the data isprocessed to determine certain statistics. In step 580, the determinedstatistics are stored. In step 582, the data and/or statistics aretransmitted to the appropriate clients (e.g. race computer 504).

[0184]FIG. 18 is a flowchart describing the method of processing data todetermine statistics (see step 578 of FIG. 17). In step 632, RPM data isfiltered. In one embodiment, any values above 10,000 are discarded andthe remaining values are subjected to a simple IIR filter (filteredrpm=½filteredrpm +½ rpm). In step 634, the velocity of each automobile isdetermined based on two position measurements and times (V=distancedivided by time). In step 636, acceleration is determined for each ofthe DAPS units. In step 638, a lap count and lap fraction is determinedfor each DAPS unit. Each lap around the track is counted and eachfraction of a lap is counted (e.g. the lap fraction). In step 640, therace position is determined. That is, whether the driver is in firstplace, second place, third place, etc. In step 642, it is determined howfar (in terms of time) each car is behind the leader car (the firstplace car). In step 644, virtual loop information is determined. In step646, the system predicts when one or more of the cars will run out offuel. In step 648, missing sensor data can be estimated using the GPSinformation. The method of FIG. 18 is primarily performed bycommunication control computer 520. The steps of FIG. 18 can beperformed in a different order than as depicted in the drawing.

[0185]FIG. 19 is a flowchart describing the method of determining thelap count and lap fraction (step 638 of FIG. 18). To aid in determininglap fractions, a racetrack (or other track or surface) is broken up intoa number of sections, with each section having borders. For example,FIG. 20 shows a portion of racetrack 650 broken up into a number ofsections 652, 654 and 656. In FIG. 20, the sections are rectangular,however other shapes can be used. For example, at curved portions of atrack, a section can be trapezoidal in shape. Section 652 has beginningborder 658 and end border 660. Section 654 has beginning border 660 andend border 662. Section 656 has beginning border 662 and end border 664.

[0186]FIG. 19 describes a process for determining lap numbers and lapfractions. The process of FIG. 19 is performed for each DAPS unit. Instep 670, it is determined whether there is GPS determined position datacurrently available for the DAPS unit under consideration. If so, themethod loops to 672 and accesses the GPS determined position of the carunder consideration. In step 674, the system determines which section ofthe track the car is on based on the position from step 672. In step676, the system determines what lap the car is on based on what sectionthe car is in and the previous lap stored for the car. Prior to therace, the beginning border of each section is pre-assigned with a lapfraction. In one embodiment, the track is broken into one hundredequally spaced sections so that the first section is at lap fraction 0,the second section is at lap fraction .01, the third section is lapfraction .02, etc. The system will store the previous lap fraction andlap number. By knowing the new lap fraction, the system can determinewhether the car has crossed the finish line, thus, starting a new lap.In step 678, the system accesses the pre-stored lap fractions for thestart border of the section the car is currently in and the nextsection. While the car may be exactly at one of the borders, it islikely to be between the borders. Therefore, in step 680, the systeminterpolates the lap fraction based on the two borders.

[0187] If it is determined in step 670 that there is not a current GPSdetermined position available for the car under consideration, themethod loops to step 686. The latest real loop data for the car underconsideration is accessed in step 686. The system also accesses thelatest real loop data for the car directly ahead of the current carunder consideration. In step 690, the system determines the differencein time between the loop data for the two cars. In step 692, the systemaccesses the previously recorded or computed speed of the car directlyahead of the car under consideration at the time of crossing the loop.This speed and time may need to be interpolated. In step 694, thedistance between the two cars at the time of crossing the loop isdetermined based on speeds and time. This distance is assumed to be thedistance between the two cars during the entire lap as long as no GPSdata is available. Thus, in step 696, the system determines the currentposition of the car under consideration by subtracting the distancecomputed in 694 from the current position of the car directly ahead ofit. After step 696, the method loops to step 694.

[0188] Once knowing the lap fractions for all the cars, the system candetermine the race position (step 640 of FIG. 18) by ranking all theDAPS units based on lap and lap fraction.

[0189]FIG. 21 is a flowchart for describing the process for determiningthe time behind the leader (step 642 of FIG. 18). In step 700, thesystem stores the lap fractions and associated times at each lapfraction for the leader car at one hundred positions along of the track.More or less than one hundred positions can also be used. Steps 702-712are then performed for each car for which the time behind the leader isto be computed. In step 702, the system accesses the lap and lapfraction for the car under consideration. In step 704, the systemdetermines whether there is position data for the leader car at theexact same lap and lap fraction. If so, the times of the two cars arecompared in step 706 to determine the time behind the leader. If not,then the lap fraction of the leader car just before the lap fraction ofthe car under consideration is accessed in step 708 and the lap fractionjust after the lap fraction for the car under consideration is accessedin step 710. In step 712, the system interpolates the times for the twolap fractions of step 708 and 710 to determine the time the leader wasat the same position as the current car under consideration. The time ofthe leader car and the time of the current car under consideration arecompared to determine the difference, which is the time behind theleader.

[0190]FIG. 22 is a flowchart describing the method of determiningvirtual loop information (see step 644 of FIG. 18). Actual physicalloops have been described above. In one embodiment, the system usesvirtual loops. Rather (or in addition to) installing a real loop wire inthe track, the system virtually creates loops and measures informationabout cars passing over these virtual loops using the GPS position data.FIG. 20 was used to explain how the track was divided up into sections.In one embodiment, the beginning of each section can be used as avirtual loop. In step 720 of FIG. 22, the system accesses the currentposition of each DAPS unit. In step 722, the system accesses theprevious position of each car. In step 724 the system determines whetherany of the cars have crossed the beginning of the section being used asa virtual loop. In one embodiment, there can be one virtual loop. Inanother embodiment, more than one virtual loop can be used in whichcase, step 724 will determine whether any of the virtual loops have beencrossed. In addition to sections on the track, the pit area can also bedivided into sections and a virtual loop can be created at the beginningor end of the pit area. Thus, the system can determine whether any carsentered the pit area or left the pit area, and how long the cars were inthe pit area based on entrance and exit times.

[0191] For all cars that have crossed the virtual loop between theprevious and current position, the system interpolates to determine theexact time the loop was crossed (step 726). In step 728, the systemdetermines the speed at the time of crossing the loop by considering atthe current position and the previous position. In step 730, any splittimes are determined. That is, in one embodiment, the system maydetermine split times between virtual loops. In step 732, the speed atthe time of crossing the virtual loop, the crossing time and the splittimes are all stored. In step 734, any of the information stored in step732 can be reported to race computer 504, or any other client.

[0192]FIG. 23 is a flowchart describing the process for predicting whena particular car will run out of fuel. The process of FIG. 23 can beperformed for each car. In step 820, the system accesses the currentthrottle position for the car. In step 822, the system accesses thecurrent speed for the car. The speed can be determined by looking at thecurrent and previous positions (and associated times). In step 824, thesystem determines the proximity of the car under consideration to nearbycars. In step 826, the system determines which of the nearby cars causea drafting effect for the car under consideration. In step 828, thesystem determines a current rate of fuel consumption as a function ofspeed, throttle position and distance to nearby cars that are causingdrafting. In step 830, the system updates the fuel volume for the carbased on the new consumption rate determined in step 828 and the timefrom the last update. In one embodiment, booth UI computer 532 is usedby an operator to indicate when a car fills its gas tank. The volume ofthe tank is known in advance. The level of the fuel is then updated eachiteration of step 830, with the process of FIG. 23 performed each time aGPS position is received. In step 832, the system makes a prediction ofwhen the fuel tank will be empty based on the current consumption rateand the current volume. That is, current consumption rate multiplied bytime will equal the current volume at a certain time, this time iscalculated and reported.

[0193] Step 648 of FIG. 18 includes estimating missing sensor data usingGPS information. That is, there may be situations when the sensors onthe DAPS units are not able to sense or report data. In those instances,the system uses GPS derived information to estimate the missing sensordata. For example, the following equations explain how to estimatethrottle position and brake position.$v_{x_{n}} = \left( \frac{\left( {\lambda_{n} - \lambda_{n - 1}} \right) \cdot {\cos \left( L_{n} \right)} \cdot 60 \cdot 6072}{\left( {t_{n} - t_{n - 1}} \right)} \right)$$v_{y_{n}} = \left( \frac{\left( {L_{n} - L_{n - 1}} \right) \cdot 60 \cdot 6072}{\left( {t_{n} - t_{n - 1}} \right)} \right)$$v_{n} = \sqrt{v_{x_{n}}^{2} + v_{y_{n}}^{2}}$${RPM}_{n} = {\left( \frac{v_{n} \cdot 60 \cdot R_{g}}{2\pi \sqrt{t}} \right) \cdot \left( {1 + {a_{L_{n}} \cdot \alpha_{s}}} \right)}$$a_{L_{n}} = {\left( \frac{\left( {v_{n} - v_{n - 1}} \right)}{32 \cdot \left( {t_{n} - t_{n - 1}} \right)} \right)\quad g}$H_(E) = k(RPM − RPM_(MAX))² + H_(E_(MAX))$F_{d} = \left( \frac{{\frac{1}{2}C_{d}A\quad \rho \quad v^{2}}\quad}{32} \right)$F_(R) = r_(r)V F_(a) = a_(L) ⋅ M F_(w) = F_(a) + F_(R) + F_(d)$H_{w} = \left( \frac{{F_{w} \cdot r_{t} \cdot 2}\quad {\pi \cdot {RPM} \cdot 60}}{R_{g} \cdot 550} \right)$$T = \left( \frac{100 \cdot H_{w}}{H_{E}} \right)$$B = {100\quad \left( \frac{F_{w}}{M} \right)}$

[0194] where:

[0195] M=car weight (e.g. 3600 lb)

[0196] L_(n)=latitude at time n

[0197] λ_(n)=longitude at time n

[0198] V_(n)=velocity at time n

[0199] v_(x) _(n) =x component of velocity

[0200] v_(y) _(n) =y component of velocity

[0201] R_(g)=gear ratio

[0202] RPM=revolutions per minute

[0203] r_(t)=tire radius

[0204] a_(l) _(n) =longitudinal acceleration at time n

[0205] α_(s)=slip factor of tire

[0206] H_(Σ)=horsepower of engine at full throttle as a function of RPM

[0207] RPM_(max)=RPM where horsepower is maximum

[0208] H_(E) _(MAX) =peak engine horsepower

[0209] K=engine horsepower constant

[0210] F_(d)=aerodynamic drag

[0211] A=frontal area

[0212] C_(d)=drag coefficient

[0213] p=air density =.0801

[0214] F=rolling resistance drag

[0215] r_(r)=rolling resistance constraint

[0216] F_(a)=force from acceleration

[0217] F_(w)=force applied to wheels

[0218] H_(w)=horsepower applied to wheel

[0219] T=throttle position

[0220] B=brake position

[0221] Step 566 of FIG. 15 includes enhancing the video. FIG. 24 is aflowchart describing more details of the process of enhancing the video.Before the process of FIG. 24 is performed, race computer knows whichcars will be highlighted and what data (including statistics determinedabove) needs to be added to the video. In step 860, the positions in thevideo of the image of each of the cars to be highlighted is determined.The system already knows the three dimensional location of the cars inreal space based on the GPS technology described above. These threedimensional locations are transformed to two- dimensional positions inthe video in step 860. Enhancing video and transformingthree-dimensional locations to two dimensional positions is known in theart and described in U.S. Pat. Nos. 5,912,700; 6,252,632; 5,917,553;6,229,550; and U.S. patent application Ser. Nos. 09/472,635, “MeasuringCamera Attitude” filed on Dec. 27, 1999 and 09/425,992, “TelestratorSystem” filed on Oct. 21,1999, all of the above listed patents andapplications are incorporated herein by reference. In step 862, thesystem creates highlights at or near the positions determined in step860. The following are examples of highlights that can be created: acloud, circle, oval or other shape can be placed over a car; anellipsoid can be placed over the car; an arrow or line pointing to thecar can be added; an identification (such as a image of a driver, carnumber, sponsor, team name, etc.) can be added to the video at or nearthe car; or any other type of highlight can be used. In one embodiment,a frame or field of the video is created with the highlight at theappropriate position. In step 864, data can be added to the createdfield or frame of video. In one embodiment the data is added as text. Inanother embodiment, the data is added as graphics. The data couldinclude driver name, car number, throttle position, RPM, brake position,speed, time behind the leader, current position in the race (e.g. firstplace, second place, etc.), split time, an indication of whether the caris in the pit area, time in pit area, speed, etc. In one embodiment, thedata from step 864 is connected to the highlight from 862 by a line(step 866). In other embodiments the data is not connected to thehighlight. In step 868, the data and/or highlights are blended with thevideo of the race using keyer 510 or another video modification unit.

[0222] One embodiment described above includes using an ellipsoid as ahighlight of a car or other object. In one embodiment, the orientationof the ellipsoid (or other shape) changes as the attitude of the imageof the car changes in the video. FIG. 25 is a flowchart describing theprocess of providing an ellipsoid (or other shape) whose orientationchanges as the attitude of the car (or other object) changes. In step880, the system determines the attitude of the car. This is determinedby comparing two successive positions of the car and assuming theattitude to be the direction from the first position to the secondposition. In step 882, an ellipsoid is created. The major axis and theminor axis of the ellipsoid are the length and width of the car. In step884, the system finds all points on the ellipsoid that have a tangentplane that includes the nodal point of the camera providing the video ofthe race. The tangent plane of a point is a plane that touches thatparticular point under consideration and no other point on theellipsoid. It turns out that all the points identified in step 884 willbe in a plane. In step 886, the system determines that plane. In step888, the plane determined in step 886 is intersected with the ellipsoid.The intersection of the plane and the ellipsoid is drawn in step 890.That intersection drawn in step 890 is the highlight added to the videoat the position of the image of the car in the process of FIG. 24. Asthe attitude of the image of the car wheel changes, the shape andorientation of the ellipsoid will change. In one embodiment, the imagedrawn in step 890 is a solid. In another embodiment, the image is anoutline with the center of the shape being clear. The equations belowinclude math used to implement the process of FIG. 25.

[0223] A standard ellipse centered at the origin can be described by theequation, $\begin{matrix}{{\frac{x^{2}}{a^{2}} + \frac{y^{2}}{b^{2}} + \frac{z^{2}}{c^{2}}} = 1} & \left( {{Equation}\quad 1} \right)\end{matrix}$

[0224] or with the matrix equation, $\begin{matrix}\begin{matrix}\left\lbrack x \right. & y & z & {{{\left. 1 \right\rbrack \begin{bmatrix}\frac{1}{a^{2}} & 0 & 0 & 0 \\0 & \frac{1}{b^{2}} & 0 & 0 \\0 & 0 & \frac{1}{c^{2}} & 0 \\0 & 0 & 0 & {- 1}\end{bmatrix}}\begin{bmatrix}x \\y \\z \\1\end{bmatrix}} = 0}\end{matrix} & \left( {{Equation}\quad 2} \right)\end{matrix}$

[0225] Let S be the 4 by 4 matrix, $\begin{matrix}{S = \begin{bmatrix}\frac{1}{a^{2}} & 0 & 0 & 0 \\0 & \frac{1}{b^{2}} & 0 & 0 \\0 & 0 & \frac{1}{c^{2}} & 0 \\0 & 0 & 0 & {- 1}\end{bmatrix}} & \left( {{Equation}\quad 3} \right)\end{matrix}$

[0226] Then points on the standard ellipsoid can be given by theequation, $\begin{matrix}\begin{matrix}\left\lbrack x \right. & y & z & {{\left. 1 \right\rbrack {S\begin{bmatrix}x \\y \\z \\1\end{bmatrix}}} = 1.}\end{matrix} & \left( {{Equation}\quad 4} \right)\end{matrix}$

[0227] The general ellipsoid of a given orientation and location can berepresented by rotating and translating the standard ellipsoid. Letpoints on the general ellipsoid be given by (x1,y1,z1). Then the(x1,y1,z1) points can be described by the equation,

[x1 y1 z1 1]=[x y z 1]R·T,   (Equation 5)

[0228] where R is a four by four rotation matrix, and T is a four byfour translation matrix. Let

Mew=R·T,   (Equation 6)

[0229] and

Mwe=Mew⁻¹.   (Equation 7)

[0230] Then we have the equation,

]x y z 1]=[x1 y1 z1 1]Mwe.   (Equation 8)

[0231] Then points on the general ellipsoid can be described by theequation, $\begin{matrix}\begin{matrix}\left\lbrack {x1} \right. & {y1} & {z1} & {{{\left. 1 \right\rbrack {{Mwe} \cdot S \cdot {{Mwe}^{T}\begin{bmatrix}{x1} \\{y1} \\{z1} \\1\end{bmatrix}}}} = 0},}\end{matrix} & \left( {{Equation}\quad 9} \right)\end{matrix}$

[0232] where Mwe^(T) is the transpose of the matrix, Mwe.

[0233] Let $\begin{matrix}{{{{Mwe} \cdot S \cdot {Mwe}^{T}} = \begin{bmatrix}{c11} & {c12} & {c13} & {c14} \\{c21} & {c22} & {c23} & {c24} \\{c31} & {c32} & {c33} & {c34} \\{c41} & {c42} & {c43} & {c44}\end{bmatrix}},} & \left( {{Equation}\quad 10} \right)\end{matrix}$

[0234] and let A=c11, B=c22, C=c33, D=c12+c21, E=c23+c32, F=c13+c31,G=c14+c41, H=c24+c42, I=c34+c43, J=c44. Let the nodal point of thecamera model be (nx,ny,nz). Let A3=Fnz+2Anx+Dny+G, B3=Enz+Dnx+2Bny+H,C3=2Cnz+Fnx+Eny+I, and D3=lnz+Gnx+Hny+2J.

[0235] Then it can be shown that the intersection of the generalellipsoid and plane is described by the equation,

A3x1+B3y1+C3z1+D3=0.   (Equation 11)

[0236] The set of points on the ellipsoid whose tangent plane containsthe nodal point all lie in a single plane. That plane is given inEquation 11.

[0237] In one embodiment of the system described above, the system canshow phantom cars in a video that depicts actual cars racing. Forexample, during time trials, while a particular car is driving aroundthe track, a phantom car showing the position of the leading car can beadded to the video. Alternatively, while a driver of interest is beingshown on television during a race, the position of another car duringanother running of the race (or other situation) can be depicted in theimage. In one embodiment, the image of the phantom car is an image of acar added to each field of the video. In another embodiment, the phantomimage will change orientation as appropriate for the particular segmentof track. In one embodiment, the system determines the orientation ofthe track in the current video field or frame and creates a new carimage with an orientation matching that of the track. In anotherembodiment, the system pre-renders images of a car for differentorientations of the track or car.

[0238]FIG. 26 is a flowchart describing a process for providing virtualcars using pre-rendered images. In step 900, pre-rendered images of acar in different orientations are created and stored. Step 900 is mostlikely done prior to the start of a race; however, it can be done later.Steps 902-916 are likely to be done during or after the race (or otherevent). At step 902, the system determines the elapsed time for theposition information for the actual car being shown in the video. It isassumed that the actual car is in the video and the system is attemptingto add a virtual car to the video. The virtual car represents anothercar that will be referred to as the reference car. The latest positioninformation known for the actual car has a time associated with it. Bysubtracting the time associated with the car position from the time ofthe start of the race, an elapsed time can be determined for the actualcar. In step 904, the system finds a three dimensional location of thereference car associated with the time determined in step 902. Forexample, if the elapsed time during a time trial was thirty seconds, thesystem will look for the three dimensional location of the reference carthirty seconds into the time trial for the reference car. In step 906,that three-dimensional location of the reference car is transformed intoa two dimensional position in the video as described above. In step 908,the system determines the three dimensional location data of thereference car just prior to the location data determined in step 904. Byknowing two different locations of the car, the orientation of thereference car can be determined. The system then looks for thepre-rendered image having an orientation closest to the orientation ofthe reference car. Alternatively, the system can look for the closestpair of pre-rendered images and interpolate between the two of them instep 914. In step 916, the new interpolated images (or one of thepre-rendered images without interpolating) is blended with the video. Inan alternative embodiment, by identifying the three dimensional locationof the virtual car in step 904, the system can determine which sectionof the track the car was in. Each section of the track can be associatedwith one of the pre-rendered images and that image can be used to blendwith the video in step 916.

[0239] One embodiment of the present invention also includes a crashcamera, which is a camera that automatically detects that a crash hasoccurred and automatically points toward the crash. The crash cameraenables the television viewer to instantly view a crash scene at a race.FIG. 27 shows one embodiment of the components of the camera locationfor the crash camera. Camera 940 is a standard broadcast televisioncamera known in the art. Connected to camera 940 are camera sensors andservo motors 942. The camera sensors are similar to the camera sensorsdescribed above. Servo motors are motors that move the camera about thepan and tilt axes. The servo motors are controlled by, and incommunication with, processor 948. Processor 948 is in communicationwith communication control computer 520 and the television productionequipment that chooses a video source for broadcast. When a crash isdetected, processor 548 sends a signal to the production equipment toselect the video from camera 940 for broadcast. Processor 948 willreceive data about various DAPS units from communication controlcomputer 520. Similar to the camera locations described above, camera940 is in communication with camera control unit 944, which is connectedto VITC 946.

[0240]FIG. 28 is a flowchart describing the process performed byprocessor 948. In one embodiment, processor 948 is a personal computer.In step 960, processor 948 receives the current positions of all thecars (or other objects) from communication control computer 520. In step962, processor 948 determines whether any of the car positions, ascompared to previous positions, indicate a change in speed or directionthat meets a predefined threshold. Any car that has a sufficient changeof direction in a small amount of time or sufficient decrease in speedin a small amount of time is considered to be crashing. If a crash isdetected, then the processor 948 sends signals to servo motors 942 topoint camera 940 toward the position of the crashing car and a signal issent from processor 948 to the production equipment to select the videoof camera 940 for broadcast. If a crash wasn't detected (see step 964),the method loops back to step 960 and waits for the next set ofpositions to arrive.

[0241] In some embodiments, prior to operating the system for enhancingvideo described above, the system should be registered. Registration, atechnology known by those skilled in the art, is the process of defininghow to interpret data from a sensor and/or to ascertain data variablesfor operation of the system. The camera sensors described above outputdata, for example, related to position and orientation. Since positionand orientation are relative, the system needs a reference from which todetermine position or orientation. Thus, in order to be able to usecamera sensor data, the system needs to know how to interpret the datato make use of the information. Generally, registration includespointing the instrumented cameras at known locations and solving forunknown variables used in transformation matrices and other mathematics.More detail of how to register the system can be found in U. S. Pat.Nos. 5,862,517 and 6,229,550, both of which are incorporated herein byreference.

[0242] The foregoing detailed description of the invention has beenpresented for purposes of illustration and description. It is notintended to be exhaustive or to limit the invention to the precise formdisclosed. Many modifications and variations are possible in light ofthe above teaching. The described embodiments were chosen in order tobest explain the principles of the invention and its practicalapplication to thereby enable others skilled in the art to best utilizethe invention in various embodiments and with various modifications asare suited to the particular use contemplated. It is intended that thescope of the invention be defined by the claims appended hereto.

We claim:
 1. An apparatus for tracking objects, comprising: GPSreceivers mounted in moving objects; sensors mounted in said movingobjects; a set of one or more base stations; transmitters/receivers atsaid base stations; transmitters/receivers at said moving objects incommunication with said transmitters/receivers at said base station; aGPS reference station in communication with one of said base stationsfor providing differential GPS information; and a production center incomrunication with said base stations.
 2. An apparatus according toclaim 1, wherein: said moving objects are race cars.
 3. A method fortracking objects, comprising the steps of: using GPS to track a set ofobjects; sensing data about said set of objects; communicating said dataand GPS positions from said objects to base stations using wirelesstechnology; determining a set of statistics about said set of objects;highlighting images of said set of objects in a video; and adding saidstatistics to said video.
 4. One or more processor readable storagedevices for storing processor readable code, said processor readablecode for programming one or more processors to perform a method fortracking objects, the method comprising the steps of: using GPS to tracka set of objects; sensing data about said set of objects; communicatingsaid data and GPS positions from said objects to base stations usingwireless technology; determining a set of statistics about said set ofobjects; highlighting images of said set of objects in a video; andadding said statistics to said video.